<!DOCTYPE html>
<html>
<head>
    

    

    



    <meta charset="utf-8">
    
    
    <link rel="canonical" href="http://xiejm.com/Hive/Hive--.html">
    
    
    <title>No title | XieJM&#39;s Blog | 建立博客是为了记录工作经验以及生活点滴,也是将知识和经验分享给需要的朋友，希望对你有帮助！</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    
    <meta name="theme-color" content="#00bcd4">
    
    
    <meta name="keywords" content="">
    <meta name="description" content="Hive 客户端shell–&amp;gt; hiveWebUI:HUE/Zeppelinjdbc 二：Hive的三种启动方式      1， hive  命令行模式        进入hive安装目录，输入bin/hive的执行程序，或者输入 hive –service cli        用于linux平台命令行查询，查询语句基本跟mysql查询语句类似       2， hive  web界面的启">
<meta property="og:type" content="article">
<meta property="og:title" content="No title">
<meta property="og:url" content="http://xiejm.com/Hive/Hive--.html">
<meta property="og:site_name" content="XieJM&#39;s Blog">
<meta property="og:description" content="Hive 客户端shell–&amp;gt; hiveWebUI:HUE/Zeppelinjdbc 二：Hive的三种启动方式      1， hive  命令行模式        进入hive安装目录，输入bin/hive的执行程序，或者输入 hive –service cli        用于linux平台命令行查询，查询语句基本跟mysql查询语句类似       2， hive  web界面的启">
<meta property="og:locale" content="zh-CN">
<meta property="og:updated_time" content="2017-10-09T05:34:42.600Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="No title">
<meta name="twitter:description" content="Hive 客户端shell–&amp;gt; hiveWebUI:HUE/Zeppelinjdbc 二：Hive的三种启动方式      1， hive  命令行模式        进入hive安装目录，输入bin/hive的执行程序，或者输入 hive –service cli        用于linux平台命令行查询，查询语句基本跟mysql查询语句类似       2， hive  web界面的启">
    
        <link rel="alternate" type="application/atom+xml" title="XieJM&#39;s Blog" href="/atom.xml">
    
    <link rel="shortcut icon" href="/favicon.ico">
    <link rel="stylesheet" href="/css/style.css?v=1.6.13">
    <script>window.lazyScripts=[]</script>

    <!-- custom head -->
    

</head>

<body>
    <div id="loading" class="active"></div>

    <aside id="menu" class="hide" >
  <div class="inner flex-row-vertical">
    <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="menu-off">
        <i class="icon icon-lg icon-close"></i>
    </a>
    <div class="brand-wrap" style="background-image:url(/img/brand.jpg)">
      <div class="brand">
        <a href="/" class="avatar waves-effect waves-circle waves-light">
          <img src="/img/avatar.jpg">
        </a>
        <hgroup class="introduce">
          <h5 class="nickname">XieJM</h5>
          <a href="mailto:309469843@qq.com" title="309469843@qq.com" class="mail">309469843@qq.com</a>
        </hgroup>
      </div>
    </div>
    <div class="scroll-wrap flex-col">
      <ul class="nav">
        
            <li class="waves-block waves-effect">
              <a href="/index.html"  >
                <i class="icon icon-lg icon-home"></i>
                主页
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/archives/index.html"  >
                <i class="icon icon-lg icon-archives"></i>
                归档
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/tags/index.html"  >
                <i class="icon icon-lg icon-tags"></i>
                标签
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/categories/index.html"  >
                <i class="icon icon-lg icon-th-list"></i>
                分类
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="https://github.com/xjmhz" target="_blank" >
                <i class="icon icon-lg icon-github"></i>
                Github
              </a>
            </li>
        
      </ul>      
    </div>
    <footer class="footer">
    <p>欢迎加入我们的大数据交流群：<br>群1：258669058 群2：126181630</p>   
    <p>        
        <span><a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh"><img src="/img/cc.png"></a></span>
        
        <span><a href="/atom.xml" target="_blank" class="rss" title="rss"><i class="icon icon-2x icon-rss-square"></i></a></span>
        
    </p>
    <p><span>XieJM &copy; 2017</span>
    </p>
    <p><span>
            
            Power by <a href="http://hexo.io/" target="_blank">Hexo</a> Theme <a href="https://github.com/yscoder/hexo-theme-indigo" target="_blank">indigo</a>
        </span>
    </p>
</footer>
  </div>
</aside>

    <main id="main">
        <header class="top-header" id="header">
    <div class="flex-row">
        <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light on" id="menu-toggle">
          <i class="icon icon-lg icon-navicon"></i>
        </a>
        <div class="flex-col header-title ellipsis"></div>
        
        <div class="search-wrap" id="search-wrap">
            <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="back">
                <i class="icon icon-lg icon-chevron-left"></i>
            </a>
            <input type="text" id="key" class="search-input" autocomplete="off" placeholder="输入感兴趣的关键字">
            <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="search">
                <i class="icon icon-lg icon-search"></i>
            </a>
        </div>
        
        
        <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="menuShare">
            <i class="icon icon-lg icon-share-alt"></i>
        </a>
        
    </div>
</header>
<header class="content-header post-header">

    <div class="container fade-scale">
        <h1 class="title"></h1>
        <h5 class="subtitle">
            
                <time datetime="2017-10-08T14:48:50.208Z" itemprop="datePublished" class="page-time">
  2017-10-08
</time>


            
        </h5>
    </div>

    


</header>


<div class="container body-wrap">
    
    <aside class="post-widget">
        <nav class="post-toc-wrap" id="post-toc">
            <h4>TOC</h4>
            <ol class="post-toc"><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#Hive-客户端"><span class="post-toc-text">Hive 客户端</span></a></li><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#Hiveserver2"><span class="post-toc-text">Hiveserver2</span></a></li><li class="post-toc-item post-toc-level-2"><a class="post-toc-link" href="#hive调优"><span class="post-toc-text">hive调优</span></a><ol class="post-toc-child"><li class="post-toc-item post-toc-level-3"><a class="post-toc-link" href="#压缩和存储格式"><span class="post-toc-text">压缩和存储格式</span></a></li></ol></li></ol>
        </nav>
    </aside>
    
<article id="post-Hive/Hive--"
  class="post-article article-type-post fade" itemprop="blogPost">

    <div class="post-card">
        <h1 class="post-card-title"></h1>
        <div class="post-meta">
            <time class="post-time" title="2017-10-08 22:48:50" datetime="2017-10-08T14:48:50.208Z"  itemprop="datePublished">2017-10-08</time>

            


            
<span id="busuanzi_container_page_pv" title="文章总阅读量" style='display:none'>
    <i class="icon icon-eye icon-pr"></i><span id="busuanzi_value_page_pv"></span>
</span>


        </div>
        <div class="post-content" id="post-content" itemprop="postContent">
            <h2 id="Hive-客户端"><a href="#Hive-客户端" class="headerlink" title="Hive 客户端"></a>Hive 客户端</h2><p>shell–&gt; hive<br>WebUI:HUE/Zeppelin<br>jdbc</p>
<p>二：Hive的三种启动方式<br>      1， hive  命令行模式<br>        进入hive安装目录，输入bin/hive的执行程序，或者输入 hive –service cli<br>        用于linux平台命令行查询，查询语句基本跟mysql查询语句类似<br>       2， hive  web界面的启动方式<br>        bin/hive –service hwi  （&amp; 表示后台运行）<br>        用于通过浏览器来访问hive，感觉没多大用途，浏览器访问地址是：127.0.0.1:9999/hwi<br>       3， hive  远程服务 (端口号10000) 启动方式<br>        bin/hive –service hiveserver2  &amp;（&amp;表示后台运行）<br>        用java，python等程序实现通过jdbc等驱动的访问hive就用这种起动方式了，这个是程序员最需要的方式了</p>
<h2 id="Hiveserver2"><a href="#Hiveserver2" class="headerlink" title="Hiveserver2"></a>Hiveserver2</h2><p>启动Hiveserver2</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">[hadoop@hadoop001 bin]$ ./hiveserver2</div></pre></td></tr></table></figure>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div></pre></td><td class="code"><pre><div class="line">[hadoop@hadoop001 conf]$ jps -m</div><div class="line">4898 SecondaryNameNode</div><div class="line">9443 Jps -m</div><div class="line">6981 JobHistoryServer</div><div class="line">6633 NodeManager</div><div class="line">4602 NameNode</div><div class="line">4731 DataNode</div><div class="line">9244 RunJar /home/hadoop/app/hive-1.1.0-cdh5.7.0/lib/hive-service-1.1.0-cdh5.7.0.jar org.apache.hive.service.server.HiveServer2</div><div class="line">6527 ResourceManager</div></pre></td></tr></table></figure>
<p>与HiveServer2对应的有一个客户端 beeline</p>
<p>启动beeline</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">./beeline -u jdbc:hive2://hadoop001:10000/default -n hadoop</div><div class="line"></div><div class="line">## 命令说明</div><div class="line">-u : 指定JDBC连接串</div><div class="line">-n : 指定当前shell终端的用户名</div></pre></td></tr></table></figure>
<p>如果需要改HS2的端口号怎么办？</p>
<p>按照下面命令启动HS2就可以自定义端口了<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">hiveserver2 --hiveconf hive.server2.thrift.port=4444</div></pre></td></tr></table></figure></p>
<p><a href="http://blog.csdn.net/gamer_gyt/article/details/52062460" target="_blank" rel="external">http://blog.csdn.net/gamer_gyt/article/details/52062460</a></p>
<h2 id="hive调优"><a href="#hive调优" class="headerlink" title="hive调优"></a>hive调优</h2><p>比较常用的调优</p>
<p>基于Hadoop的框架有一句名言，<br><strong>不怕数据大，就怕数据倾斜</strong>,<br>了解MapReduce就知道，shuffle过程中会根据hash进行计算，相同的分到同一个Reduce去处理<br>架设有一份总量500G的日志数据<br>需要进行Join或者group by，这种操作需要shuffle<br>如果shuffle中 group by 或 on 某一个值等于 null ,这个数据占到了400G<br>意外着400G的数据由一个task来处理</p>
<h3 id="压缩和存储格式"><a href="#压缩和存储格式" class="headerlink" title="压缩和存储格式"></a>压缩和存储格式</h3><p><a href="https://hortonworks.com/blog/orcfile-in-hdp-2-better-compression-better-performance/" target="_blank" rel="external">https://hortonworks.com/blog/orcfile-in-hdp-2-better-compression-better-performance/</a></p>
<p><a href="http://www.cnblogs.com/xianhan/p/7149490.html" target="_blank" rel="external">http://www.cnblogs.com/xianhan/p/7149490.html</a></p>
<p>压缩：<br>    1.能否支持split（分片）</p>
<p>存储格式：两者选其一就行<br>    1.parquert<br>    2.ORC</p>
<p>在同等数据量的情况下， parquert计算快一些，但是ORC的压缩更好，能够节省不少存储空间</p>
<p>参数：<br>    1.列裁剪<br>    2.分区裁剪</p>
<p>reduce个数：百度搜索下</p>
<p>数据倾斜：shuffle：join、group by、count distince<br>通过hive的执行计划来看哪个字段出现数据清晰</p>
<p> explain select deptno,count(1) from emp group by deptno;<br>架设上面这条语句中的emp表有100亿条数据，deptno字段有20亿是null</p>
<figure class="highlight plain"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div><div class="line">47</div><div class="line">48</div><div class="line">49</div><div class="line">50</div><div class="line">51</div><div class="line">52</div><div class="line">53</div></pre></td><td class="code"><pre><div class="line">hive (default)&gt; explain select deptno,count(1) from emp group by deptno;</div><div class="line">OK</div><div class="line">Explain</div><div class="line">STAGE DEPENDENCIES:</div><div class="line">  Stage-1 is a root stage</div><div class="line">  Stage-0 depends on stages: Stage-1</div><div class="line"></div><div class="line">STAGE PLANS:</div><div class="line">  Stage: Stage-1</div><div class="line">    Map Reduce</div><div class="line">      Map Operator Tree:</div><div class="line">          TableScan</div><div class="line">            alias: emp</div><div class="line">            Statistics: Num rows: 175 Data size: 700 Basic stats: COMPLETE Column stats: NONE</div><div class="line">            Select Operator</div><div class="line">              expressions: deptno (type: int)</div><div class="line">              outputColumnNames: deptno</div><div class="line">              Statistics: Num rows: 175 Data size: 700 Basic stats: COMPLETE Column stats: NONE</div><div class="line">              Group By Operator</div><div class="line">                aggregations: count(1)</div><div class="line">                keys: deptno (type: int)</div><div class="line">                mode: hash</div><div class="line">                outputColumnNames: _col0, _col1</div><div class="line">                Statistics: Num rows: 175 Data size: 700 Basic stats: COMPLETE Column stats: NONE</div><div class="line">                Reduce Output Operator</div><div class="line">                  key expressions: _col0 (type: int)</div><div class="line">                  sort order: +</div><div class="line">                  Map-reduce partition columns: _col0 (type: int)</div><div class="line">                  Statistics: Num rows: 175 Data size: 700 Basic stats: COMPLETE Column stats: NONE</div><div class="line">                  value expressions: _col1 (type: bigint)</div><div class="line">      Reduce Operator Tree:</div><div class="line">        Group By Operator</div><div class="line">          aggregations: count(VALUE._col0)</div><div class="line">          keys: KEY._col0 (type: int)</div><div class="line">          mode: mergepartial</div><div class="line">          outputColumnNames: _col0, _col1</div><div class="line">          Statistics: Num rows: 87 Data size: 348 Basic stats: COMPLETE Column stats: NONE</div><div class="line">          File Output Operator</div><div class="line">            compressed: false</div><div class="line">            Statistics: Num rows: 87 Data size: 348 Basic stats: COMPLETE Column stats: NONE</div><div class="line">            table:</div><div class="line">                input format: org.apache.hadoop.mapred.TextInputFormat</div><div class="line">                output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat</div><div class="line">                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe</div><div class="line"></div><div class="line">  Stage: Stage-0</div><div class="line">    Fetch Operator</div><div class="line">      limit: -1</div><div class="line">      Processor Tree:</div><div class="line">        ListSink</div><div class="line"></div><div class="line">Time taken: 0.094 seconds, Fetched: 48 row(s)</div><div class="line">hive (default)&gt;</div></pre></td></tr></table></figure>
<p>看这个执行计划的关键点在<code>Map Operator Tree</code> –&gt; <code>keys: deptno (type: int)</code></p>
<p>如果数据倾斜很大可能keys的那个字段导致的！！！</p>
<p>sum()函数不会出现数据倾斜</p>
<p>count(distinct)函数会出现数据倾斜</p>
<p>SQL语句会不会出现数据倾斜，通过执行计划一目了然</p>
<p>怎么解决：<br>常见的数据倾斜就两个，join、group by<br>我们上面有说conut distinct也会导致数据倾斜，其实conut distinct底层是靠group by的。所以常见的就两个</p>
<p>1.join:</p>
<pre><code>- 情况1：小表不大，使用mapjoin
- 情况2：两个大表，使用smbjoin sort merge bucket jion
</code></pre><ol>
<li>Group by<ul>
<li>使用hive 参数配置：hive.groupby.skewindata = true<pre><code>这个参数会判断数据是否会倾斜，如果是true的话：
    1.map的输出会被随机分散到reduce上去做聚合（map输出在默认情况下是通过hash计算，把相同hash值的结果输出到同一个reduce上去）
    2.再做一次group by 。把相同的key分到一个reduce上去
</code></pre></li>
<li>使用双重group by<br>  e.g.  group by deptno ,deptno有很多null<pre><code>    使用随机数前缀 rand(10)_null
    涉及到两个UDF函数：1.添加随机前缀；2.去除随机前缀。
    select deptno, count(1) from emp group by deptno;
架设这条语句会出现数据倾斜    ==&gt; 结合2个自定义UDF改写成双重group by来完成
</code></pre></li>
</ul>
</li>
</ol>
<p>作业：非常重要，要搞清楚<br>    1）才是的是文本格式（textfile），非列式存储，如何优化<br>    2）合并小文件<br>        参数设置<br>            1.hive.merge.mapfiles<br>            2.hive.merge.mapredfile<br>            3.hive.merge.size.per.task</p>

        </div>

        <blockquote class="post-copyright">
    <div class="content">
        
<span class="post-time">
    最后更新时间：<time datetime="2017-10-09T05:34:42.600Z" itemprop="dateUpdated">2017-10-09 13:34:42</time>
</span><br>


        
        原始链接：<a href="/Hive/Hive--.html" target="_blank" rel="external">http://xiejm.com/Hive/Hive--.html</a>
        
    </div>
    <footer>
        <a href="http://xiejm.com">
            <img src="/img/avatar.jpg" alt="XieJM">
            XieJM
        </a>
    </footer>
</blockquote>

        


        <div class="post-footer">
            

            
<div class="page-share-wrap">
    

<div class="page-share" id="pageShare">
    <ul class="reset share-icons">
      <li>
        <a class="weibo share-sns" target="_blank" href="http://service.weibo.com/share/share.php?url=http://xiejm.com/Hive/Hive--.html&title=XieJM's Blog&pic=http://xiejm.com/img/avatar.jpg" data-title="微博">
          <i class="icon icon-weibo"></i>
        </a>
      </li>
      <li>
        <a class="weixin share-sns wxFab" href="javascript:;" data-title="微信">
          <i class="icon icon-weixin"></i>
        </a>
      </li>
      <li>
        <a class="qq share-sns" target="_blank" href="http://connect.qq.com/widget/shareqq/index.html?url=http://xiejm.com/Hive/Hive--.html&title=XieJM's Blog&source=Linux | Hadoop | CDH | Hive | Hbase | Spark" data-title=" QQ">
          <i class="icon icon-qq"></i>
        </a>
      </li>
      <li>
        <a class="facebook share-sns" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=http://xiejm.com/Hive/Hive--.html" data-title=" Facebook">
          <i class="icon icon-facebook"></i>
        </a>
      </li>
      <li>
        <a class="twitter share-sns" target="_blank" href="https://twitter.com/intent/tweet?text=XieJM's Blog&url=http://xiejm.com/Hive/Hive--.html&via=http://xiejm.com" data-title=" Twitter">
          <i class="icon icon-twitter"></i>
        </a>
      </li>
      <li>
        <a class="google share-sns" target="_blank" href="https://plus.google.com/share?url=http://xiejm.com/Hive/Hive--.html" data-title=" Google+">
          <i class="icon icon-google-plus"></i>
        </a>
      </li>
    </ul>
 </div>



    <a href="javascript:;" id="shareFab" class="page-share-fab waves-effect waves-circle">
        <i class="icon icon-share-alt icon-lg"></i>
    </a>
</div>



        </div>
    </div>

    
<nav class="post-nav flex-row flex-justify-between">
  
    <div class="waves-block waves-effect prev">
      <a href="/Hive/HIve--JDBC API.html" id="post-prev" class="post-nav-link">
        <div class="tips"><i class="icon icon-angle-left icon-lg icon-pr"></i> Prev</div>
        <h4 class="title">Hive的JDBC编程</h4>
      </a>
    </div>
  

  
    <div class="waves-block waves-effect next">
      <a href="/Hive/Hive--DataType.html" id="post-next" class="post-nav-link">
        <div class="tips">Next <i class="icon icon-angle-right icon-lg icon-pl"></i></div>
        <h4 class="title">Hive的数据类型和分隔符</h4>
      </a>
    </div>
  
</nav>



    


<section class="comments" id="comments">
    <div id="disqus_thread"></div>
    <script>
    var disqus_shortname = 'true';
    lazyScripts.push('//' + disqus_shortname + '.disqus.com/embed.js')
    </script>
    <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
</section>













</article>



</div>

    </main>
    <div class="mask" id="mask"></div>
<a href="javascript:;" id="gotop" class="waves-effect waves-circle waves-light"><span class="icon icon-lg icon-chevron-up"></span></a>



<div class="global-share" id="globalShare">
    <ul class="reset share-icons">
      <li>
        <a class="weibo share-sns" target="_blank" href="http://service.weibo.com/share/share.php?url=http://xiejm.com/Hive/Hive--.html&title=《No title》 — XieJM's Blog&pic=http://xiejm.com/img/avatar.jpg" data-title="微博">
          <i class="icon icon-weibo"></i>
        </a>
      </li>
      <li>
        <a class="weixin share-sns wxFab" href="javascript:;" data-title="微信">
          <i class="icon icon-weixin"></i>
        </a>
      </li>
      <li>
        <a class="qq share-sns" target="_blank" href="http://connect.qq.com/widget/shareqq/index.html?url=http://xiejm.com/Hive/Hive--.html&title=《No title》 — XieJM's Blog&source=Linux | Hadoop | CDH | Hive | Hbase | Spark" data-title=" QQ">
          <i class="icon icon-qq"></i>
        </a>
      </li>
      <li>
        <a class="facebook share-sns" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=http://xiejm.com/Hive/Hive--.html" data-title=" Facebook">
          <i class="icon icon-facebook"></i>
        </a>
      </li>
      <li>
        <a class="twitter share-sns" target="_blank" href="https://twitter.com/intent/tweet?text=《No title》 — XieJM's Blog&url=http://xiejm.com/Hive/Hive--.html&via=http://xiejm.com" data-title=" Twitter">
          <i class="icon icon-twitter"></i>
        </a>
      </li>
      <li>
        <a class="google share-sns" target="_blank" href="https://plus.google.com/share?url=http://xiejm.com/Hive/Hive--.html" data-title=" Google+">
          <i class="icon icon-google-plus"></i>
        </a>
      </li>
    </ul>
 </div>


<div class="page-modal wx-share" id="wxShare">
    <a class="close" href="javascript:;"><i class="icon icon-close"></i></a>
    <p>扫一扫，分享到微信</p>
    <img src="" alt="微信分享二维码">
</div>




    <script src="//cdn.bootcss.com/node-waves/0.7.4/waves.min.js"></script>
<script>
var BLOG = { ROOT: '/', SHARE: true, REWARD: false };


</script>

<script src="/js/main.min.js?v=1.6.13"></script>


<div class="search-panel" id="search-panel">
    <ul class="search-result" id="search-result"></ul>
</div>
<template id="search-tpl">
<li class="item">
    <a href="{path}" class="waves-block waves-effect">
        <div class="title ellipsis" title="{title}">{title}</div>
        <div class="flex-row flex-middle">
            <div class="tags ellipsis">
                {tags}
            </div>
            <time class="flex-col time">{date}</time>
        </div>
    </a>
</li>
</template>

<script src="/js/search.min.js?v=1.6.13" async></script>






<script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>



<script>
(function() {
    var OriginTitile = document.title, titleTime;
    document.addEventListener('visibilitychange', function() {
        if (document.hidden) {
            document.title = 'XieJM's Blog';
            clearTimeout(titleTime);
        } else {
            document.title = 'XieJM's Blog';
            titleTime = setTimeout(function() {
                document.title = OriginTitile;
            },2000);
        }
    });
})();
</script>



</body>
</html>
